Modern computing systems may be generally characterized as a hardware/software system, where the hardware consists of components including dynamic memory elements, non-volatile storage elements, processing elements, and various input/output elements to interface with other hardware/software components. The software architecture typically can be segregated into a kernel, an operating system, and various applications. The kernel manages and delegates access to low-level hardware elements, the operating system interfaces with the kernel to setup and manage run-time environments on behalf of applications, and the applications complete system-specific tasks by executing sequences of instructions and accessing hardware and software resources via the operating system.
Many typical computing systems include a number of applications, each of which is delegated to perform a certain subset of tasks, and the overall system behavior is determined by a number of such applications operating disjointedly and in parallel. In practice, a well-structured application requires elements of configuration in order to conform its specific operation to the desired behavior of the system, whereby such configuration elements may include, for example, details on how to interface with the operating system, how to access other system resources such as networking protocols, and further configuration details which may only pertain to the particular operation of that application.
Often, on desktop and server operating systems, applications are configured and deployed independently where each application may mandate its own configuration elements and structure them as suited to its own needs. In some cases, applications may work collaboratively with the operating system in order to provide a standardized way to access or modify their configuration, such as utilizing the Simple Network Management Protocol (SNMP), Zero Configuration Networking (ZeroConf), or even an operating-system provided interface such as the Registry on Microsoft Windows. A key point of such applications is that they are a-priori cooperative in consuming configuration details using common protocols or system resources, meaning the application developer explicitly implements code to consume configuration in this way.
On mobile operating systems configuration of individual applications is typically handled by each application itself. There may be some availability of system level configuration stores, but not all applications are required or enforced to use them. In practice, an application on a mobile operating system may keep its configuration as accorded to its own structure and needs in a private location that is not accessible by other system components. A mobile operating system may extend some configuration capabilities to be managed remotely where those capabilities typically include operating system and network communications configuration elements. However, not all applications on a mobile operating system can be expected to be cooperative in the use of such schemes. Further the mechanism to utilize such remote management schemes will typically fix the management protocol, which may be proprietary or based on a standard such as the Open Mobile Alliance (OMA) Device Management (DM) protocol. Other applications on a mobile operating system will typically handle their own configuration utilizing their own private schemes, and most generally will rely on user input through a Graphical User Interface (GUI) as a key mechanism to manage the configuration.